CSSãã£ã«ã¿å¹æã®åãæŽ»çšããŠããã©ãŠã¶å ã§çŽæ¥ãç»åæäœãèŠèŠçãªæ¡åŒµãã¯ãªãšã€ãã£ããªãã¶ã€ã³ãå®çŸããŸãããããŒãããæãããã³ã³ãã©ã¹ããªã©ã®äœ¿ãæ¹ãåŠã³ãŸãããã
CSSãã£ã«ã¿å¹æïŒãã©ãŠã¶ã§ã®ç»ååŠç
ãŠã§ãéçºã®ãã€ãããã¯ãªäžçã§ã¯ãèŠèŠçãªé åãæãéèŠã§ããCSSãã£ã«ã¿å¹æã¯ããã©ãŠã¶å ã§çŽæ¥ã€ã¡ãŒãžãèŠçŽ ãæäœãã匷åãã€å¹ççãªæ¹æ³ãæäŸããå€ãã®å Žåãå€éšã®ç»åç·šéãœãããŠã§ã¢ã®å¿ èŠæ§ãæé€ããŸãããã®èšäºã§ã¯ãCSSãã£ã«ã¿ã®æ±çšæ§ã«ã€ããŠãåºæ¬çãªæ©èœããé«åºŠãªãã¯ããã¯ãã«ã¹ã¿ã ãã£ã«ã¿é¢æ°ãŸã§ãã¹ãŠãç¶²çŸ ããŠè§£èª¬ããŸãã
CSSãã£ã«ã¿å¹æãšã¯ïŒ
CSSãã£ã«ã¿å¹æã¯ããã©ãŠã¶ã«è¡šç€ºãããåã«ãèŠçŽ ã«èŠèŠå¹æãé©çšã§ããCSSããããã£ã®ã»ããã§ãããããã®å¹æã¯ãAdobe PhotoshopãGIMPãªã©ã®ç»åç·šéãœãããŠã§ã¢ã«ãããã®ãšäŒŒãŠããŸãããããã¯ãWebããŒãžäžã®ç»åããã®ä»ã®èŠèŠã³ã³ãã³ãã匷åã倿ãããã³æ§åŒåããããã®å¹ åºããªãã·ã§ã³ãæäŸããŸãã
äºåã«ç·šéãããç»åã«é Œã代ããã«ãCSSãã£ã«ã¿ã¯ãªã¢ã«ã¿ã€ã ã®ç»ååŠçãå¯èœã«ããWebãµã€ãã®çŸåŠãããæè»ã«å¶åŸ¡ã§ããŸããããã¯ãç»åãç°ãªãç»é¢ãµã€ãºãè§£å床ã«é©å¿ããå¿ èŠãããã¬ã¹ãã³ã·ããã¶ã€ã³ã«ç¹ã«åœ¹ç«ã¡ãŸãã
åºæ¬çãªCSSãã£ã«ã¿ããããã£
CSSãã£ã«ã¿ã¯ãfilterããããã£ã䜿çšããŠé©çšãããŸãããã®ããããã£ã®å€ã¯ãç®çã®å¹æãæå®ãã颿°ã§ããæãäžè¬çãªCSSãã£ã«ã¿é¢æ°ã®æŠèŠã次ã«ç€ºããŸãã
blur(): èŠçŽ ã«ã¬ãŠã¹ãŒãããé©çšããŸããå€ã倧ããã»ã©ãèŠçŽ ã¯ãããŒãããŸããbrightness(): èŠçŽ ã®æããã調æŽããŸãã1ãã倧ããå€ã¯æãããå¢å ããã1ããå°ããå€ã¯æãããæžå°ãããŸããcontrast(): èŠçŽ ã®ã³ã³ãã©ã¹ãã調æŽããŸãã1ãã倧ããå€ã¯ã³ã³ãã©ã¹ããå¢å ããã1ããå°ããå€ã¯ã³ã³ãã©ã¹ããæžå°ãããŸããgrayscale(): èŠçŽ ãã°ã¬ãŒã¹ã±ãŒã«ã«å€æããŸãã1ïŒãŸãã¯100ïŒ ïŒã®å€ã¯è²ãå®å šã«åé€ãã0ã®å€ã¯èŠçŽ ã倿ŽããŸãããhue-rotate(): ã«ã©ãŒãã€ãŒã«äžã§èŠçŽ ã®è²çžãå転ãããŸããå€ã¯åºŠã§æå®ãããŸããinvert(): èŠçŽ ã®è²ãå転ããŸãã1ïŒãŸãã¯100ïŒ ïŒã®å€ã¯è²ãå®å šã«å転ãã0ã®å€ã¯èŠçŽ ã倿ŽããŸãããopacity(): èŠçŽ ã®éæåºŠã調æŽããŸãã0ã®å€ã¯èŠçŽ ãå®å šã«éæã«ãã1ã®å€ã¯å®å šã«äžéæã«ããŸããsaturate(): èŠçŽ ã®åœ©åºŠã調æŽããŸãã1ãã倧ããå€ã¯åœ©åºŠãå¢å ããã1ããå°ããå€ã¯åœ©åºŠãæžå°ãããŸããsepia(): èŠçŽ ã«ã»ãã¢è²èª¿ãé©çšããŸãã1ïŒãŸãã¯100ïŒ ïŒã®å€ã¯èŠçŽ ã«å®å šãªã»ãã¢å¹æãäžãã0ã®å€ã¯èŠçŽ ã倿ŽããŸãããdrop-shadow(): èŠçŽ ã«ããããã·ã£ããŠã远å ããŸãããã®é¢æ°ã¯ãæ°Žå¹³æ¹åããã³åçŽæ¹åã®ãªãã»ããããŒããååŸãããã³åœ±ã®è²ãå«ãããã€ãã®ãã©ã¡ãŒã¿ãåããŸãã
å®è·µçãªäŸ
CSSãã£ã«ã¿å¹æã®äœ¿ç𿹿³ã«é¢ããããã€ãã®å®è·µçãªäŸãèŠãŠã¿ãŸãããã
äŸ1ïŒã€ã¡ãŒãžã®ãŒãã
ã€ã¡ãŒãžããŒããã«ã¯ãblur()ãã£ã«ã¿é¢æ°ã䜿çšã§ããŸããæ¬¡ã®CSSã³ãŒãã¯ãã€ã¡ãŒãžã«5ãã¯ã»ã«ã®ãŒãããé©çšããŸãã
img {
filter: blur(5px);
}
äŸ2ïŒæãããšã³ã³ãã©ã¹ãã®èª¿æŽ
ã€ã¡ãŒãžã®æãããšã³ã³ãã©ã¹ãã調æŽããã«ã¯ãbrightness()ããã³contrast()ãã£ã«ã¿é¢æ°ã䜿çšã§ããŸããæ¬¡ã®CSSã³ãŒãã¯ãã€ã¡ãŒãžã®æãããšã³ã³ãã©ã¹ããå¢å ãããŸãã
img {
filter: brightness(1.2) contrast(1.1);
}
äŸ3ïŒã°ã¬ãŒã¹ã±ãŒã«å¹æã®äœæ
ã°ã¬ãŒã¹ã±ãŒã«å¹æãäœæããã«ã¯ãgrayscale()ãã£ã«ã¿é¢æ°ã䜿çšã§ããŸããæ¬¡ã®CSSã³ãŒãã¯ãã€ã¡ãŒãžãã°ã¬ãŒã¹ã±ãŒã«ã«å€æããŸãã
img {
filter: grayscale(100%);
}
äŸ4ïŒã»ãã¢ããŒã³ã®é©çš
ã»ãã¢ããŒã³ãé©çšããã«ã¯ãsepia()ãã£ã«ã¿é¢æ°ã䜿çšã§ããŸããæ¬¡ã®CSSã³ãŒãã¯ãã€ã¡ãŒãžã«ã»ãã¢ããŒã³ãé©çšããŸãã
img {
filter: sepia(80%);
}
äŸ5ïŒããããã·ã£ããŠã®è¿œå
ããããã·ã£ããŠã远å ããã«ã¯ãdrop-shadow()ãã£ã«ã¿é¢æ°ã䜿çšã§ããŸããæ¬¡ã®CSSã³ãŒãã¯ãã€ã¡ãŒãžã«ããããã·ã£ããŠã远å ããŸãã
img {
filter: drop-shadow(5px 5px 5px rgba(0, 0, 0, 0.5));
}
è€æ°ã®ãã£ã«ã¿ã®çµã¿åãã
CSSãã£ã«ã¿ã®æã匷åãªåŽé¢ã®1ã€ã¯ãè€æ°ã®ãã£ã«ã¿ãçµã¿åãããŠè€éãªèŠèŠå¹æãäœæã§ããããšã§ããåäžã®filterããããã£ã§è€æ°ã®ãã£ã«ã¿é¢æ°ãé£éãããããšãã§ããŸãããã©ãŠã¶ã¯ããªã¹ããããŠããé åºã§ãã£ã«ã¿ãé©çšããŸãã
ããšãã°ããã³ããŒãžåç广ãäœæããã«ã¯ãsepia()ãcontrast()ãããã³blur()ãã£ã«ã¿ãçµã¿åãããããšãã§ããŸãã
img {
filter: sepia(0.6) contrast(1.2) blur(2px);
}
ããã©ãŒãã³ã¹ã«é¢ããèæ ®äºé
CSSãã£ã«ã¿ã¯ã€ã¡ãŒãžãæäœãã䟿å©ãªæ¹æ³ãæäŸããŸãããããã©ãŒãã³ã¹ã«æ³šæããããšãéèŠã§ããããŒãžäžã®å€ãã®èŠçŽ ã«è€éãªãã£ã«ã¿ãé©çšãããšãç¹ã«å€ãããã€ã¹ããã©ãŠã¶ã§ã¬ã³ããªã³ã°ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸããããã©ãŒãã³ã¹ãæé©åããããã®ãã³ããæ¬¡ã«ç€ºããŸãã
- ãã£ã«ã¿ã¯æ§ããã«äœ¿çšããïŒå¿ èŠãªå Žåã«ã®ã¿ãã£ã«ã¿ãé©çšããé床ãªäœ¿çšã¯é¿ããŠãã ããã
- ã€ã¡ãŒãžãµã€ãºãæé©åããïŒã€ã¡ãŒãžãWebçšã«é©åã«æé©åãããŠããããšã確èªããŠããã¡ã€ã«ãµã€ãºãåæžããããŒãæéãæ¹åããŸãã
- ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ã䜿çšããïŒã»ãšãã©ã®ææ°ãã©ãŠã¶ã¯CSSãã£ã«ã¿ã«ããŒããŠã§ã¢ã¢ã¯ã»ã©ã¬ãŒã·ã§ã³ãå©çšããŠããŸãããèŠçŽ ã«
transform: translateZ(0);ããããã£ã远å ããããšã§ããããããã«æšå¥šã§ããŸããããã«ããããã©ãŠã¶ã¯èŠçŽ ãç¬èªã®ã¬ã€ã€ãŒã§ã¬ã³ããªã³ã°ããããã«åŒ·å¶ãããŸããããã«ãããããã©ãŒãã³ã¹ãåäžããå¯èœæ§ããããŸãã - ããŸããŸãªããã€ã¹ã§ãã¹ãããïŒãã£ã«ã¿ãæ£åžžã«æ©èœããŠããããšã確èªããããã«ãããŸããŸãªããã€ã¹ãšãã©ãŠã¶ã§åžžã«Webãµã€ãããã¹ãããŠãã ããã
ãã©ãŠã¶ã®äºææ§
CSSãã£ã«ã¿å¹æã¯ãChromeãFirefoxãSafariãEdgeãªã©ã®ææ°ãã©ãŠã¶ã§åºããµããŒããããŠããŸãããã ããå€ãããŒãžã§ã³ã®Internet Explorerã§ã¯ããã¹ãŠã®ãã£ã«ã¿é¢æ°ããµããŒããããŠããªãå ŽåããããŸããæ¬çªWebãµã€ãã§CSSãã£ã«ã¿ã䜿çšããåã«ããã©ãŠã¶ã®äºææ§ã確èªããããšãéèŠã§ãã
Can I UseïŒcaniuse.comïŒãªã©ã®Webãµã€ãã䜿çšããŠãããŸããŸãªãã©ãŠã¶ããã³ããŒãžã§ã³ã§ã®CSSãã£ã«ã¿å¹æã®äºææ§ã確èªã§ããŸãã
ãŠãŒã¹ã±ãŒã¹ãšã¢ããªã±ãŒã·ã§ã³
CSSãã£ã«ã¿å¹æã¯ã次ã®ãããªããã€ãã®ã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšã§ããŸãã
- ã€ã¡ãŒãžã®ã£ã©ãªãŒïŒãã£ã«ã¿ãé©çšããŠããŠããŒã¯ã§èŠèŠçã«é åçãªã€ã¡ãŒãžã®ã£ã©ãªãŒãäœæããŸãã
- 補åã·ã§ãŒã±ãŒã¹ïŒè£œåã€ã¡ãŒãžã匷åããŠã詳现ã匷調ããããé åçãªã·ã§ããã³ã°äœéšãäœæããŸãã
- ããŒããŒã»ã¯ã·ã§ã³ïŒåŸ®åŠãªãŒãããæããããŸãã¯ã³ã³ãã©ã¹ãã®èª¿æŽã§ãããŒããŒã»ã¯ã·ã§ã³ã«èŠèŠçãªé¢å¿ã远å ããŸãã
- ã€ã³ã¿ã©ã¯ãã£ããšãã§ã¯ãïŒãããŒãŸãã¯ã¯ãªãã¯æã«ãã£ã«ã¿å€ã倿ŽããŠãã€ã³ã¿ã©ã¯ãã£ããšãã§ã¯ããäœæããŸãã
- ã¢ã¯ã»ã·ããªãã£ïŒãã£ã«ã¿ã䜿çšããŠãèŠèŠé害ã®ãããŠãŒã¶ãŒã®ã³ã³ãã©ã¹ããé«ãããªã©ãWebãµã€ãã®ã¢ã¯ã»ã·ããªãã£ãåäžãããŸãã
- ããŒããšãã©ã³ãã£ã³ã°ïŒç»åã®è²ããµã€ãã®ããŒããŸãã¯ãã©ã³ãã®è²ã«é©å¿ãããŸããããšãã°ãããŽã®é è²ãããŒã¯ã¢ãŒããšã©ã€ãã¢ãŒãã®ãµã€ããã¶ã€ã³ã§åŸ®åŠã«å€æŽããŸãã
åºæ¬çãªãã£ã«ã¿ãè¶
ããŠïŒã«ã¹ã¿ã ãã£ã«ã¿é¢æ°ïŒfilter: url()ïŒ
çµã¿èŸŒã¿ã®CSSãã£ã«ã¿é¢æ°ã¯å€ãã®æè»æ§ãæäŸããŸãããScalable Vector GraphicsïŒSVGïŒãã£ã«ã¿ã䜿çšããŠã«ã¹ã¿ã ãã£ã«ã¿é¢æ°ãäœæããããšãã§ããŸããããã«ãããããã«é«åºŠã§ã¯ãªãšã€ãã£ããªã€ã¡ãŒãžæäœãå¯èœã«ãªããŸãã
ã«ã¹ã¿ã ãã£ã«ã¿é¢æ°ã䜿çšããã«ã¯ãSVGãã¡ã€ã«ã§ãã£ã«ã¿ãå®çŸ©ããfilter: url()ããããã£ã䜿çšããŠCSSã§åç
§ããå¿
èŠããããŸãã
äŸïŒã«ã¹ã¿ã ã«ã©ãŒãããªãã¯ã¹ãã£ã«ã¿ã®äœæ
ã«ã©ãŒãããªãã¯ã¹ãã£ã«ã¿ã䜿çšãããšãä¿æ°ã®ãããªãã¯ã¹ã䜿çšããŠã€ã¡ãŒãžã®è²ã倿ã§ããŸããããã¯ãè²ã®è£æ£ãè²ã®çœ®æãè²ã®æäœãªã©ãå¹ åºã广ãäœæããããã«äœ¿çšã§ããŸãã
ãŸããæ¬¡ã®ã³ã³ãã³ãã䜿çšããŠSVGãã¡ã€ã«ïŒäŸïŒcustom-filter.svgïŒãäœæããŸãã
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<filter id="color-matrix">
<feColorMatrix type="matrix"
values="1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0" />
</filter>
</defs>
</svg>
ãã®äŸã§ã¯ãfeColorMatrixèŠçŽ ã¯ãID color-matrixãæã€ã«ã©ãŒãããªãã¯ã¹ãã£ã«ã¿ãå®çŸ©ããŸããvalues屿§ã¯ããããªãã¯ã¹ä¿æ°ãæå®ããŸããããã©ã«ãã®ãããªãã¯ã¹ïŒåäœè¡åïŒã¯ãè²ã倿ŽããŸãããè²ãæäœããã«ã¯ãvalues屿§ã倿ŽããŸãã
次ã«ãCSSã§SVGãã£ã«ã¿ãåç §ããŸãã
img {
filter: url("custom-filter.svg#color-matrix");
}
ããã«ãããã«ã¹ã¿ã ã«ã©ãŒãããªãã¯ã¹ãã£ã«ã¿ãã€ã¡ãŒãžã«é©çšãããŸããSVGãã¡ã€ã«ã®values屿§ã倿ŽããŠãããŸããŸãªã«ã©ãŒå¹æãäœæã§ããŸããäŸãšããŠã¯ã圩床ã®å¢å ãè²ã®å転ããŸãã¯ãã¥ãªããŒã³å¹æã®äœæãªã©ããããŸãã
ã¢ã¯ã»ã·ããªãã£ã«é¢ããèæ ®äºé
CSSãã£ã«ã¿ã䜿çšããå Žåã¯ãã¢ã¯ã»ã·ããªãã£ãèæ ®ããããšãéèŠã§ãããã£ã«ã¿ãé床ã«äœ¿çšããã誀çšããããããšãèŠèŠé害ã®ãããŠãŒã¶ãŒãã³ã³ãã³ããèªèããã®ãé£ãããªãå¯èœæ§ããããŸãã
- ååãªã³ã³ãã©ã¹ãã確ä¿ããïŒããã¹ããšèæ¯ã®ã³ã³ãã©ã¹ããé«ããããã«ãã£ã«ã¿ã䜿çšããŠãèªã¿ããããåäžãããŸãã
- 代æ¿ããã¹ããæäŸããïŒã€ã¡ãŒãžã衚瀺ã§ããªããŠãŒã¶ãŒãã³ã³ãã³ããçè§£ã§ããããã«ãåžžã«ã€ã¡ãŒãžã®èšè¿°çãªä»£æ¿ããã¹ããæäŸããŸãã
- ç¹æ» ãŸãã¯ã¹ããã广ãé¿ããïŒç¹æ» ãŸãã¯ã¹ããã广ãäœæãããã£ã«ã¿ã䜿çšããå Žåã¯æ³šæããŠãã ããããããã¯ãå éææ§ãŠãããã®ãããŠãŒã¶ãŒã«ãŠãããçºäœãåŒãèµ·ããå¯èœæ§ããããŸãã
- æ¯æŽæè¡ã§ãã¹ãããïŒã¹ã¯ãªãŒã³ãªãŒããŒãªã©ã®æ¯æŽæè¡ã䜿çšããŠWebãµã€ãããã¹ããããã£ã«ã¿ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã劚ããŠããªãããšã確èªããŸãã
ä»åŸã®ãã¬ã³ããšéçº
CSSãã£ã«ã¿å¹æã¯ç¶ç¶çã«é²åããŠãããæ°ãããã£ã«ã¿é¢æ°ãšæ©èœãCSS仿§ã«è¿œå ãããŠããŸãããã©ãŠã¶ãCSSãã£ã«ã¿ã®ãµããŒããæ¹åãç¶ããã«ã€ããŠãWebãã¶ã€ã³ã§ãããã®å¹æã®ããã«é©æ°çã§ã¯ãªãšã€ãã£ããªäœ¿çšãèŠããããšäºæ³ã§ããŸãã
ææãªãã¬ã³ãã®1ã€ã¯ãããé«åºŠãªã«ã¹ã¿ã ãã£ã«ã¿é¢æ°ã®éçºã§ããããã«ãããéçºè ã¯ããã«è€éã§æŽç·ŽãããèŠèŠå¹æãäœæã§ããããã«ãªããŸãã
çµè«
CSSãã£ã«ã¿å¹æã¯ããã©ãŠã¶å ã§çŽæ¥ã€ã¡ãŒãžãèŠçŽ ã匷åããã³å€æãã匷åã§çšéã®åºãæ¹æ³ãæäŸããŸããæãããã³ã³ãã©ã¹ããªã©ã®åºæ¬çãªèª¿æŽããããŒãããè²ã®æäœãªã©ã®è€éãªå¹æãŸã§ãCSSãã£ã«ã¿ã¯èŠèŠçã«é åçã§é åçãªWebãšã¯ã¹ããªãšã³ã¹ãäœæããããã®å¹ åºããªãã·ã§ã³ãæäŸããŸããCSSãã£ã«ã¿ã®ååãçè§£ããããã©ãŒãã³ã¹ãšã¢ã¯ã»ã·ããªãã£ã«é¢ãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ããããã®å¹æã掻çšããŠãèŠäºã§ãŠãŒã¶ãŒãã¬ã³ããªãŒãªWebãµã€ããäœæã§ããŸãã
CSSãã£ã«ã¿ã®åµé çãªå¯èœæ§ãåãå ¥ããWebãã¶ã€ã³ã次ã®ã¬ãã«ã«åŒãäžããŸãããïŒ
ãã®ä»ã®åŠç¿ãªãœãŒã¹
- MDN Web Docs: CSS filter property
- CSS-Tricks: CSS filter property
- Can I Use: Browser compatibility for CSS filters